在 Linux 中可以透過建立 KVM「核心基礎虛擬機器 (Kernel-based Virtual Machine;KVM)」 建立不同作業系統環境,無論是 RedHat 、Debian 或是 windows 都可以建立。在學習 Linux 的過程是不錯的學習工具。
這部份需要進入 BIOS 開啟,AMD 是 VT , Intel 是 VT-x、VT-d 或 VT-c 。
啟動之後可以下指令檢查
grep --color --perl-regexp 'vmx|svm' /proc/cpuinfo
sudo apt -y install qemu-system libvirt-clients libvirt-daemon-system qemu-kvm libvirt-daemon bridge-utils virtinst virt-manager
sudo systemctl enable libvirtd
sudo modprobe vhost_net
sudo virsh net-start default
sudo virsh net-autostart default
sudo adduser jameschang libvirt-qemu
sudo adduser jameschang libvirt
建立虛擬機之前必須先建立虛擬硬碟。
sudo qemu-img create -f qcow2 /home/jameschang/VMS/linux/debian9.qcow2 20G
建立完虛擬磁碟就是建立虛擬機啦!指令說明如下。
virt-install --virt-type kvm --name [虛擬機識別名稱] --ram [記憶體大小mb] --disk [虛擬硬碟掛載目錄],format=[虛擬磁碟格式] --network network=[虛擬網路界面] --graphics vnc,listen=0.0.0.0,password=debian9 --noautoconsole --os-type=linux --os-variant=[作業系統版本] --cdrom=[ISO光碟位置]
sudo virt-install --virt-type kvm --name debian9 --ram 4096 --disk /home/jameschang/VMS/linux/debian9.qcow2,format=qcow2 --network network=network1 --graphics vnc,listen=0.0.0.0,password=debian9 --noautoconsole --os-type=linux --os-variant=debian9 --cdrom=/data/softwares/linux/debian-9.13.0-amd64-netinst.iso
sudo virsh start debian9
如果須樣在主機中依開機後就啟動虛擬機可以這樣處理。
sudo virsh autostart debian9
有時候在 KVM 設定完虛擬機環境後,可以把虛擬機轉成 vmdk 格式,讓其他類型虛擬管理工具使用,如:oracle virtualbox。
qemu-img convert -f qcow2 -O vmdk zimbra9-ubuntu18.04 zimbra9-ubuntu18.04.vmdk
指定虛擬機網卡IP,除了可以在虛擬機裡設定,也可以直接在KVM 中直接設定
sudo virsh net-list
$ sudo virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
network active yes yes
virsh net-edit $NETWORK_NAME
<dhcp>
<range start='192.168.122.100' end='192.168.122.254'/>
<host mac='52:54:00:ed:3c:bc' name='winxp' ip='192.168.122.2'/>
<host mac='52:54:00:19:1b:70' name='loki' ip='192.168.122.3'/>
<host mac='52:54:00:b8:f1:68' name='gilLab' ip='192.168.122.4'/>
<host mac='' name='vm1' ip=''/>
</dhcp>
$NETWORK_NAME
是
sudo virsh net-destroy $NETWORK_NAME &&\
sudo virsh net-start $NETWORK_NAME
# [磁碟路徑] [要擴充的容量]
qemu-img resize /kvm/win10 +20G
qemu-img info /kvm/win10
image: /kvm/win10
file format: qcow2
virtual size: 40 GiB (42949672960 bytes)
disk size: 39.8 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: true
refcount bits: 16
corrupt: false
extended l2: false
我工作上有時候也會測試 windows XP ,又碰到無法上網的問題,主要是驅動問題,設定成 Realtek 即可。
qemu-kvm -net nic,model=rtl8139 -net user -hda /opt/WinXP2010.img -smb /path/to/shared/dir -m 1024
How to Add Memory, vCPU, Hard Disk to Linux KVM Virtual Machine
架設 Linux KVM 虛擬化主機 (Set up Linux KVM virtualization host)